home *** CD-ROM | disk | FTP | other *** search
- (*===========================================================================*)
- (* Miscellaneous # 1 -- Cursor control/Erase EOL/Color *)
- (* *)
- (* Copyright 1988, 1989 by H. Roy Engehausen. All rights reserved. *)
- (* This software may be freely distributed and used, but it may not *)
- (* under any circumstances be sold by anyone other than the author. *)
- (* It may be distributed by a commercial company as long as it is *)
- (* for no cost. *)
- (* *)
- (*===========================================================================*)
-
- (*===========================================================================*)
- (* Color select *)
- (*===========================================================================*)
-
- PROCEDURE color(parm:WORD);
-
- {$UNDEF DEBUG}
-
- BEGIN
-
- {$IFDEF DEPTH}
- stack_depth;
- {$ENDIF}
-
- {$IFDEF DEBUG}
- WRITELN('COLORS - ', (parm MOD 16) + 16*(parm SHR 7), '/',
- (parm SHR 4) MOD 16);
- DELAY(1000);
- EXIT;
- {$ENDIF}
-
- TEXTCOLOR((parm MOD 16) + 16*(parm SHR 7));
- TEXTBACKGROUND((parm SHR 4) MOD 16);
-
- END;
-
- (*===========================================================================*)
- (* Window erase to end of line *)
- (*===========================================================================*)
-
- PROCEDURE window_erase_eol(wn : BYTE);
-
- BEGIN;
-
- {$IFDEF DEPTH}
- stack_depth;
- {$ENDIF}
-
-
- IF current_window <> wn THEN
- window_select(wn);
-
- WITH window_array[wn] DO
- BEGIN;
-
- IF NOT window_act THEN
- EXIT;
-
- IF wn = window_reset THEN
- color(opt_block.status_color)
- ELSE
- color(active_tcb^.w_color);
-
- CLREOL;
-
- GOTOXY(window_cursor, window_location[window_loc].window_wl);
-
- END;
-
- END;
-
- (*===========================================================================*)
- (* Window cursor locate/update *)
- (*===========================================================================*)
-
- FUNCTION window_cursor_update(new_place : BYTE) : BYTE;
- BEGIN;
-
- {$IFDEF DEPTH}
- stack_depth;
- {$ENDIF}
-
- WITH window_array[current_window] DO
- BEGIN;
- window_cursor := WHEREX;
- window_cursor_update := window_cursor;
- IF new_place <> 0 THEN
- BEGIN;
- window_cursor := new_place;
- GOTOXY(new_place, WHEREY);
- END;
- END;
-
- END;
-
- (*===========================================================================*)
- (* Set cursor size *)
- (*===========================================================================*)
-
- PROCEDURE window_cursor_size(cursor_size : BOOLEAN);
-
- VAR
- regs : REGISTERS;
-
- BEGIN;
-
- {$IFDEF DEPTH}
- stack_depth;
- {$ENDIF}
-
- regs.AX := $0100;
- IF cursor_size THEN
- regs.CX := window_cursor_block
- ELSE
- regs.CX := window_cursor_orig;
- INTR($10, regs);
-
- END;